﻿using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using CREAPA.Dominio;
using CREAPA.Dominio.contrato;
using CREAPA.Repositorio;

namespace CREAPA.RepositorioADO
{
    public class SituacaoPortariaRepositorioADO// : IRepositorio<SituacaoPortariaRepositorioADO>
    {
        private Contexto contexto;       

        public SituacaoPortaria ListarPorId(string Id)
        {
            using (contexto = new Contexto())
            {
                var strQuery = String.Format(" SELECT * FROM SituacaoPortaria WHERE Id = {0}", Id);
                var retornoDataReader = contexto.ExecutaComandoComRetorno(strQuery);
                return TransformaReaderEmListaDeObjeto(retornoDataReader).FirstOrDefault();
            }
        }

        public IEnumerable<SituacaoPortaria> ListarPorIdDescricao(int IdPortaria)
        {
            using (contexto = new Contexto())
            {
                var strQuery = String.Format("select Id,s.Descricao,Data,IdPortaria,PessoaCadastrou,t.Descricao DescTipoSituacao " +
                            "from SituacaoPortaria s inner join TiposituacaOs t on s.IdTipoSituacao=t.IdTipoSituacao" +
                            " WHERE IdPortaria = '{0}'", IdPortaria);
                var retornoDataReader = contexto.ExecutaComandoComRetorno(strQuery);
                return TransformaReaderEmListaDeObjeto(retornoDataReader);
            }
        }
        
        private List<SituacaoPortaria> TransformaReaderEmListaDeObjeto(SqlDataReader reader)
        {

            var os = new List<SituacaoPortaria>();
            while (reader.Read())
            {
                var TemObjeto = new SituacaoPortaria()
                {
                    Id = int.Parse(reader["Id"].ToString()),
                    Descricao = reader["Descricao"].ToString(),
                    Data = DateTime.Parse(reader["Data"].ToString()),
                    PessoaCadastrou = reader["PessoaCadastrou"].ToString(),
                    IdPortaria = reader["IdPortaria"] != DBNull.Value ? int.Parse(reader["IdPortaria"].ToString()) : 0,
                    DescTipoSituacao = reader["DescTipoSituacao"].ToString()
                 };
                os.Add(TemObjeto);
            }
            reader.Close();
            return os;
        }
    }
}






